package com.zy.design.state;

/**
 * 在打开状态只能做关闭操作
 * @author hugx
 * @create 2018-09-12 10:05
 */
public class OpenDoorState implements LiftState {
    private StateContext context;

    @Override
    public void setStateConetxt(StateContext context) {
        this.context=context;
    }

    /**
     * 在关闭open状态下，电梯可以执行close 操作
     */
    @Override
    public void openDoor() {
        System.out.println("打开电梯门");
    }

    @Override
    public void closeDoor() {
        /**
         * 在打开状态只能做关闭操作，设计技巧：
         * 1、将context 对象中当前的open 状态，修改为close 状态
         * 2、再将执行关闭的操作委派给CloseDoorState 去执行
         */
        context.setLiftState(context.closeDoorState);
        context.getLiftState().closeDoor();
    }

    @Override
    public void runing() {

    }

    @Override
    public void stop() {

    }
}
